Міністерство освіти і науки України
Національний університет «Львівська Політехніка»
Інститут комп’ютерних технологій автоматики та метрології
Кафедра БІТ
Звіт
до лабораторної роботи № 4
з дисципліни :
“Програмування комп’ютерної графіки ”
Львів 2012
Мета: З'ясувати особливості тривимірного моделювання, побудови об'ємних зображень як проекцій на екранній плоскості; дати поняття про параметри вигляду.
КОРОТКІ ТЕОРЕТИЧНІ ДАНІ
Тривимірні координати.
У попередніх лабораторних роботах для малювання фігур використовувалася версія команди glVertex з двома параметрами. Координата по осі Z передбачалася рівною 0.
Для зображення в просторі використовується команда glVertex з трьома параметрами:
glVertex3f(<координата x>, <координата у>, <координата z>).
Значення координати Z лежить в межах від –1 до 1. За умовчанням вважається, що спостерігач розташований в крапці (0, 0, 0), що слід мати на увазі. Щоб вершини з позитивними координатами Z були змальовані, слід зрушити систему координат углиб екрану.
OPENGL відтворює тільки ті частки примітивів, координати яких не перевершують по модулю 1. Примітиви з однаковими координатами малюються за принципом: кожен подальший малюється поверх попереднього. Таке зображення не завжди дає правильні результати, зокрема, якщо не включена підтримка буфера глибини.
Буфер глибини.
Буфер глибини використовується для передачі простору. При відтворенні кожного піксела в цей буфер записується інформація про значення координати Z піксела, так звана віконна Z. Якщо на піксел доводиться декілька крапок, на екран виводиться крапка з найменшим значенням цієї координати.
Для правильної побудови зображень (відповідно до глибини) необхідно включити режим тестування глибини за допомогою команди:
glEnable(GL_DEPTH_TEST);
Код сцени слід починати з очищення двох буферів: буфера кадру і буфера глибини:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Точно так, як і перед черговою побудовою необхідно очистити поверхню малювання, для коректного відтворення потрібно очистити буфер простору.
Проекції.
Зображення тривимірних об'єктів на екрані будується за допомогою проекцій: паралельною (ортографічною) і перспективною.
При зображенні тривимірних об'єктів слід мати на увазі, що зображення будується в межах одиничного куба (координати по кожній з осей змінюються в межах від –1 до 1), причому початок координат (центр куба) знаходиться в центрі вікна, а вісь Z направлена перпендикулярно площині екрану у бік спостерігача. Спосіб проектування визначається вибором команди для установки параметрів вигляду:
glFrustum – вибирається перспективний спосіб проектування
glOrtho – вибирається паралельний спосіб проектування
При паралельному проектуванні зберігається паралельність прямих. Наприклад, при зображенні куба в паралельній проекції задня і передня грані будуть рівні.
При використанні перспективної проекції паралельні лінії об'єкту змальовуються такими, що сходяться в деякій видаленій («углиб» екрану) крапці, що і створює перспективу.
Параметри проектування відносяться до параметрів вигляду.
Хід роботи:
Перед виконанням лабораторної роботи слід ознайомитися з необхідними теоретичними відомостями, що відносяться до можливостей тривимірного моделювання з використанням бібліотеки OPENGL. Рекомендується уважно вивчити теоретичний матеріал, що відноситься до різних способів проектування ([7] – лекція 15).
Завдання лабораторної роботи рекомендується виконувати в порядку їх проходження, відповідно до варіанту, вказаного викладача.
Завдання до лабораторної роботи.
Варіант 2
Фігури
(задані вершинами)
Параметри вигляду
Поворот осей
До завдання 6
Чотирикутник:
(-0.5, -0.5, -0.5) (-0.5, 0.5, -0.5)
(0.8, 0.5, -0.5) (0.5, -0.8, -0.5)
Трикутник:
(-1, -1, 1) (-1, 1, 1) (1, 0, -1);
Трикутник:
(-0.7, -0.7, -0.7) (0, 0, 0) (0, 0, 1)
-0.9, 0.8
-0.8, 0.9
5, 10
Навколо OX:
45
Навколо OY:
45
Змінюється масштаб:...